package com.atguigu.dao;

import com.atguigu.bean.Employee;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author 伟哥
 * @date 2021-06-04 18:09
 */
public interface EmployeeDao {

    /**
     * 查询：按照员工的id，查询员工
     *
     * @param id 需要被查询出来的员工，他的id
     * @return 返回查询出来的员工
     */
    public Employee getEmpById(Integer id);

    //Sql映射文件，传参数，能传递哪些？
    public Employee getEmpByIdAndEmpName(@Param("id")Integer id,@Param("empName")String empName);

    //Sqll映射文件，传参数，Map
    public Employee getEmpByIdAndEmpNameByMap(Map<String,Object> map);

    // 查询5、查询返回List集合
    public List<Employee> getAllEmps();
    // 查询6、返回Map集合：单条记录封装Map
    public Map<String,Object> getEmpByIdReturnMap(Integer id);
    // 查询6、返回Map集合：多条记录封装Map
    @MapKey("id")
    public Map<Integer,Employee> getAllEmpsReturnMap();

    /**
     * 更新：传入员工并更新
     * @param employee
     * @return
     */
    public int updateEmployee(Employee employee);

    /**
     * 删除：根据id删除员工
     * @param id
     * @return
     */
    public boolean deleteEmployee(Integer id);

    /**
     * 增加：增加员工
     * @param employee
     * @return
     */
    public int insertEmployee(Employee employee);
    //测试，非自动id的数据库，获取id
    public int insertEmployee2(Employee employee);
}
